class A
{
    protected void f()
    {
        System.out.printf("AAAA\n");
    }
}
class B extends A
{
   // protected void f()       可以改写
    //{
   //     System.out.printf("BBBB\n");
   // }
   // public void f()          也可以改写
    //{
    //    System.out.printf("BBBB\n");
   // }
}
public class TestRewrite
{
    public static void main(String[] args)
    {
        B bb = new B();
        bb.f();
    }
}
/*
重写从父类继承来的方法要求
    1、父类原本的函数重载没有问题，或者有问题但没有继承（函数重载不依靠返回值的类型区分）
    2、重写父类的方法只在子类内部进行，不影响分类本身的方法（对应父类的非私有方法仍可通过 super. 的方式访问
    3、在子类内部重写的方法的权限一定要比父类的高或与父类的相同
*/